<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
            "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>



<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META name="GENERATOR" content="hevea 1.08">
<LINK rel="stylesheet" type="text/css" href="libman.css">
<TITLE>
Finite Domains: ic
</TITLE>
</HEAD>
<BODY >
<A HREF="libman003.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="libman002.html"><IMG SRC ="contents_motif.gif" ALT="Up"></A>
<A HREF="libman005.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
<HR>

<H2 CLASS="section"><A NAME="htoc3">1.2</A>&nbsp;&nbsp;Finite Domains: <EM>ic</EM></H2><UL>
<LI><A HREF="libman004.html#toc1"><EM>Integer Domain</EM></A>
<LI><A HREF="libman004.html#toc2">Symbolic Domain: <EM>ic_symbolic</EM></A>
<LI><A HREF="libman004.html#toc3">Global Constraints: <EM>ic_global</EM></A>
<LI><A HREF="libman004.html#toc4">Scheduling Constraints</A>
</UL>

<A NAME="toc1"></A>
<H3 CLASS="subsection"><A NAME="htoc4">1.2.1</A>&nbsp;&nbsp;<EM>Integer Domain</EM></H3>
The standard constraint solver offered by most constraint programming
systems is the <EM>finite domain</EM> solver, which applies constraint
propagation techniques developed in the AI community
[<A HREF="libman072.html#VanHentenryck"><CITE>21</CITE></A>]. 
ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP>  supports finite domain constraints via the <EM>ic</EM>
library<SUP><A NAME="text2" HREF="libman002.html#note2">2</A></SUP>.
This library implements finite domains of integers, and the usual
functions and constraints on variables over these domains.<BR>
<BR>
<A NAME="toc2"></A>
<H3 CLASS="subsection"><A NAME="htoc5">1.2.2</A>&nbsp;&nbsp;Symbolic Domain: <EM>ic_symbolic</EM></H3>
In addition to integer domains, ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP> offers finite domains of
ordered non-numeric values, for example <I>red</I>, <I>green</I>, <I>blue</I>.
These are implemented by the <EM>ic_symbolic</EM> library.<BR>
<BR>
Whilst there is a standard set of constraints supported by the 
<EM>ic</EM> library in ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP>  and in 
most constraint programming systems, many more finite domain
constraints have been introduced which have uses in specific
applications and do not belong in a generic constraint programming
library.
The behaviour of these constraints is to prune the finite domains of
their variables, in just the same way as the standard
constraints.
Therefore ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP>  offers several further libraries which implement more
constraints using the <EM>ic</EM> library. <BR>
<BR>
<A NAME="toc3"></A>
<H3 CLASS="subsection"><A NAME="htoc6">1.2.3</A>&nbsp;&nbsp;Global Constraints: <EM>ic_global</EM></H3>
One such library is <EM>ic_global</EM>.
It supports a variety of constraints, each of which takes as an argument
a list of finite domain variables, of unspecified length.
Such constraints are called &#8220;global&#8221; constraints [<A HREF="libman072.html#beldiceanu"><CITE>2</CITE></A>].
Examples of such constraints, available from the ic_global library
are
<CODE>alldifferent/1</CODE>, <CODE>maxlist/2</CODE>, <CODE>occurrences/3</CODE> and
<CODE>sorted/2</CODE>.<BR>
<BR>
<A NAME="toc4"></A>
<H3 CLASS="subsection"><A NAME="htoc7">1.2.4</A>&nbsp;&nbsp;Scheduling Constraints</H3>
There are several ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP>  libraries implementing global constraints for
scheduling applications. The constraints have the same semantics,
but different propagation. The constraints take a list
of tasks (start times, durations and resource needs), and a maximum
resource level. They reduce the finite domains of the task start times
by reasoning on resource bottlenecks [<A HREF="libman072.html#lepape"><CITE>13</CITE></A>]. Three ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP>  libraries
implementing scheduling constraints are
<EM>cumulative</EM>, <EM>edge_finder</EM> and <EM>edge_finder3</EM>.<BR>
<BR>
<HR>
<A HREF="libman003.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="libman002.html"><IMG SRC ="contents_motif.gif" ALT="Up"></A>
<A HREF="libman005.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
</BODY>
</HTML>
